//合并两个有序链表
//将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 
//思路一：合并两个数组：begin1,begin2.next
//逐次比较
struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2) {
	if (!list1)
		return list2;
	if (!list2)
		return list1;
	struct ListNode* tail = NULL;
	struct ListNode* newhead = NULL;
	//第一遍if语句来确认newhead和tail（即新节点，和尾节点）
	if (list1->val <= list2->val) {
		newhead = list1;
		list1 = list1->next;
	}
	else {
		newhead = list2;
		list2 = list2->next;
	}
	tail = newhead;
	//while循环来连接链表，直到其中一条链表比较完毕
	while (list1 && list2) {
		if (list1->val <= list2->val) {
			tail->next = list1;
			list1 = list1->next;
		}
		else {
			tail->next = list2;
			list2 = list2->next;
		}
		tail = tail->next;//始终使tail处于尾结点
	}
	///剩下的链表直接连接
	tail->next = !list1 ? list2 : list1;
	return newhead;
}